Volume rendering is an important area of computer graphics. It is employed in a wide variety of disciplines, including medicine, geology, biology and meteorology. Volume rendering allows a user to look inside an object and see features that were otherwise shielded by the rendering of the surface features of the object. One patent teaching volume rendering using voxels is U.S. Pat. No. 6,304,266, issued Oct. 16, 2001, entitled “Method and Apparatus For Volume Rendering” which is incorporated herein by reference.
In FIG. 1 volumetric data is shown as consisting of a three-dimensional (3D) dataset of elements called “voxels” 102. Typically, the voxels 102 are uniformly distributed throughout a volume 104. Each voxel 102 has a position in the volume and has associated with it information such as color, illumination, opacity, velocity, amplitude, etc. The information associated with each voxel 102 is produced by such disciplines as medicine (e.g., CAT scans), biology (confocal microscopy), and geoscience (seismic data).
In FIG. 2 is shown how data values of voxels 102 are typically stored in a storage array 202. The position of a particular voxel in the volume is inherent in its location in the array. For example, array position 204 might be associated with a point 106 (FIG. 1) in the volume that is a specified distance from a specified corner of the volume. Typically, a single value is stored in the array 202 for each voxel 102, although it is also possible to store more than one value for each voxel 102, such as for color, illumination, opacity, velocity and amplitude.
FIGS. 3, 4, and 5 show 2D texture rendering subdividing volumetric data into slices. 2D texture rendering organizes the slices into three sets of slices 302, 402 and 502 along three different orthogonal axes. The voxels are partitioned among the sets of slices 302, 402 and 502 and into cells containing multiple voxels in each slice. The partitioning is done based on the position of the voxels in array 202. In a similar fashion, 3D texture rendering typically slices the volume perpendicular to the viewing direction.
The rendering is then accomplished on a slice-by-slice basis, moving from the rear-most slice 304, 404 and 504, respectively, to the front-most slice 306, 406 and 506 respectively. The set of slices that is chosen and processed is the set whose axis makes the smallest angle to the viewing direction. While a new image is rendered it is blended with the previously drawn scene, creating perception of a 3D body. 2D texture rendering organizes the slices along one of the three volume dimensions, while 3D texture rendering slices the volume perpendicular to the viewing direction, which improves image quality, but requires interpolation between the volume data points. Such interpolation is usually performed by specialized graphics hardware.
FIGS. 6 and 7 show how texture value, or “texel,” is determined for each voxel in each slice (blocks 702 and 704). The texels are stored in a data buffer 602 (block 706). Typically, the texel value is an indication of the RGB colors (red, green & blue) to be displayed for a voxel as determined by one or more parameters dependent on the data value or values associated with the voxel and is found in a look-up table. For example, the texel data may include a value for each of the red, green, and blue (RGB) components associated with the voxel. When all of the voxels in the slice have been processed (block 704), the contents of the data buffer are downloaded into a texture memory 604 (block 708).
FIG. 8 shows a display device 802 upon which information downloaded with the texel data is displayed. Based on that information and the perspective requested by the user, the display device maps the texels onto pixels on a display screen 804 (block 710). As each slice is downloaded and rendered, the user sees the volume in the requested perspective. Each time the user changes the view, for example by using a software tool to rotate, translate or magnify the image of the volume, the process of downloading and rendering slices is repeated.
In FIG. 9 is illustrated the display of a volume that shows the outside surfaces of the volume. The interior of the volume is not seen.
In some applications, greater flexibility is achieved by using semi-transparent data. Semi-transparent data is created by adding an additional factor, alpha (α), to each voxel along with the RGB (red, green & blue) components described above. The value of alpha of a voxel determines the opacity of the voxel. Opacity is a measure of the amount a particular voxel on a slice will allow a voxel on a background slice that maps to the same pixel on a 2D display to show through. The opacity of a voxel controls how the image of the voxel is blended with the images of the voxels behind it in the view being displayed. An opacity value of 0.0 means a voxel is completely transparent and cannot be seen so has no effect on the color of the displayed pixel on the 2D display since it is considered to be empty; and a value of 1.0 means the voxel is completely opaque, may be considered solid and, if it has no other voxels mapped in front of it, its texel determines the color of the displayed pixel. Intermediate opacity values correspond to intermediate levels of opacity, and the texel defined colors of two voxels mapped to the same pixel are mixed in conventional ways to determine the color of the pixel that will be displayed.
In FIG. 10 is illustrated an opacity tool, such as the one included in the GEOVIZ product from Schlumberger-GeoQuest, the assignee of the present invention. The opacity tool is used to map volumetric data, such as geophysical seismic interpretation, magnetic imaging, and ultra-sonography data, to see semi-transparent volumetric data therein. In those cases, the value of each voxel is not only mapped to a color defined by its texel but also with an opacity defined by alpha (α). In FIG. 10, the user has adjusted the opacity mapping, shown graphically by curve 1002, to make transparent all voxels (alpha=0) except those having large positive or negative values. This has the effect of making most of the data transparent when displayed, as can be seen from the histogram 1004 that reflects the distribution of the values of the voxels in the volumetric data displayed in FIG. 9. This is a technique called “standard opacity volume rendering” and allows a user to make voxels within a selected range of data values invisible, while leaving other voxels visible.
In FIG. 11 is shown a display that results when the data displayed in FIG. 9 is processed using the opacity tool shown in FIG. 10. The surface of the volume no longer obscures structures inside the volume as is evident when comparing FIGS. 9 and 11.
It is also apparent from the histogram 1004 and FIG. 11 that most of the opacity-adjusted voxels are transparent and have no effect on the display.